package com.zhb.zhbaiagent.tools;

import org.springframework.ai.tool.ToolCallback;
import org.springframework.ai.tool.ToolCallbacks;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 工具注册类，用于将各个工具类实例注册为 Spring Bean，并通过 ToolCallback 提供给 Spring AI 框架使用。
 */
@Configuration
public class ToolRegistration {

    /**
     * 从配置文件中注入 SearchAPI 的 API 密钥
     */
    @Value("${search-api.api-key}")
    private String searchApiKey;

    /**
     * 注册所有工具，供 AI 代理调用
     *
     * @return 包含所有工具的 ToolCallback 数组
     */
    @Bean
    public ToolCallback[] allTools() {
        // 创建各个工具的实例
        FileOperationTools fileOperationTool = new FileOperationTools();
        WebSearchTool webSearchTool = new WebSearchTool(searchApiKey);
        WebScrapingTool webScrapingTool = new WebScrapingTool();
        ResourceDownloadTool resourceDownloadTool = new ResourceDownloadTool();
        TerminalOperationTool terminalOperationTool = new TerminalOperationTool();
        PDFGenerationTool pdfGenerationTool = new PDFGenerationTool();
        TerminateTool toolTerminate = new TerminateTool();
        // 将所有工具实例封装到 ToolCallbacks 中返回
        return ToolCallbacks.from(
            fileOperationTool,
            webSearchTool,
            webScrapingTool,
            resourceDownloadTool,
            terminalOperationTool,
            pdfGenerationTool,
                toolTerminate
        );
    }
}
